package com.example.deepschool.repositories;

import com.example.deepschool.Model.Course;
import com.example.deepschool.Model.Pagination;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;

/**
 * 课程 数据访问接口
 */
@Repository
@Mapper
public interface CourseRepository {
	
	/**
	 * 插入一条课程记录
	 *
	 * @param course 要插入的课程对象
	 * @return 返回插入操作影响的行数
	 */
	Integer insert ( Course course );
	
	/**
	 * 根据ID删除一条课程记录
	 *
	 * @param id 要删除的课程的ID
	 * @return 返回删除操作影响的行数
	 */
	Integer delete ( Long id );
	
	/**
	 * 更新一条课程记录
	 *
	 * @param course 要更新的课程对象
	 * @return 返回更新操作影响的行数
	 */
	Integer update ( Course course );
	
	/**
	 * 根据ID选择一条课程记录
	 *
	 * @param id 要选择的课程的ID
	 * @return 返回匹配的课程对象，如果没有找到返回null
	 */
	Course select ( Long id );
	
	/**
	 * 根据课程名查询课程
	 *
	 * @param name 要选择的课程的名
	 * @return 返回匹配的课程数组，如果没有找到返回空数组
	 */
	Course[] selectByName ( String name );
	
	/**
	 * 查询课程记录的总数
	 *
	 * @return 返回课程记录的总数
	 */
	Integer selectCount ( );
	
	/**
	 * 根据ID数组查询课程
	 *
	 * @param ids 要选择的课程的ID数组
	 * @return 返回匹配的课程对象数组，如果没有找到返回空数组
	 */
	Course[] selectByIds ( Long[] ids );

	/**
	 * 查询 课程封面一样的课程
	 *
	 * @param CoverImage 封面地址
	 * @return 返回对应的数量
	 */
	Integer selectCoverImageCount( String CoverImage );
	
	/**
	 * 分页 查询课程
	 *
	 * @param pagination 分页对象
	 * @return 返回匹配的课程对象数组，如果没有找到返回空数组
	 */
	Course[] selectByPagination (Pagination pagination);
	
}
